Databases are generally used to store large quantities of information, in an organized manner that enables fast and convenient searching and other database operations. Often, it is necessary or desirable to capture, replicate, or audit changes that occur in a particular database table.
For example, it may be desirable to replicate changes over time, for purposes of reliability and availability of the data. In particular, replicating data (and associated changes) at a particular source table to one or more target tables at disparate locations makes the data more widely available for potential users, and less susceptible to a particular system failure. In other examples, data change capture may be used to integrate data from multiple sites, for data warehousing and reporting, or for performing audits of database transactions.
Existing techniques for capturing database changes in the above and similar scenarios suffer from various drawbacks. In general, existing techniques require excessive overhead in terms of latency, computational resources, and human resources required for configuration and maintenance. Further, the existing techniques may have limited applicability in heterogeneous environments, such as when change data is required to be replicated across different database systems.